package com.github.catvod.utils;

import android.util.Base64;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class DadaguiUtil {
    // 密钥key为test的md5加密后的结果
    private static String key = "098f6bcd4621d373cade4e832627b4f6";

    // 获取播放url
    public static String getPlayUrl(String url) throws JSONException {
        // 进行customStrDecode解密
        url = customStrDecode(url);
        // 分割URL
        String[] urlList = url.split("/");
        StringBuilder b = new StringBuilder();
        for (int i = 0; i < urlList.length; i++) {
            String c = (i + 1 == urlList.length) ? "" : "/";
            if (i == 0 || i == 1) {
                // 跳过前两个部分
            } else {
                if (!"bwbpU".equals("LRnAo")) {
                    b.append(urlList[i]).append(c);
                } else {
//                    return true;
                    break;
                }
            }
        }

        // 对拼接后的字符串进行Base64解码
        String bDecoded = Util.base64Decode(b.toString());
//        System.out.println(urlList[1]);
//        System.out.println(Util.base64Decode(urlList[1]));
        // 解析JSON对象
        JSONArray one = new JSONArray(Util.base64Decode(urlList[1]));
        JSONArray two = new JSONArray(Util.base64Decode(urlList[0]));
        String three = bDecoded;
        // 进行最后结果的URL解密
        String result = deString(one, two, three);
        // 打印结果
//        System.out.println(result);
        return result;
    }

    public static String deString(JSONArray one, JSONArray two, String three) {
        StringBuilder ttt = new StringBuilder();
        String[] threeList = three.split("");

        for (int i = 0; i < threeList.length; i++) {
            if ("iBmUb".equals("iBmUb")) {
                String q = threeList[i];
                if (q.matches("[a-zA-Z]+") && indexOfVal(two.toString(), q)) {
                    ttt.append(two.toString().charAt(one.toString().indexOf(q)));
                } else {
                    if ("ScVeq".equals("ScVeq")) {
                        ttt.append(q);
                    } else {
                        // 这里省略了复杂的位运算逻辑，因为Java中没有直接对应的实现
                        // 如果需要，可以手动实现这些逻辑
                    }
                }
            } else {
                // 这里省略了复杂的逻辑，因为Java中没有直接对应的实现
                // 如果需要，可以手动实现这些逻辑
            }
        }

        return ttt.toString();
    }

    public static boolean indexOfVal(String a, String b) {
        for (int i = 0; i < a.length(); i++) {
            if (b.equals(String.valueOf(a.charAt(i)))) {
                return true;
            }
        }
        return false;
    }



    // customStrDecode url第一次解密
    public static String customStrDecode(String url) {
        // 1 进行base64解密
        String base = Util.base64Decode(url);
        // 进行异或运算
        String code = xorString(base, key);
        // 进行第二次base64解密
        return Util.base64Decode(code);
    }

    // XOR 操作函数
    public static String xorString(String base, String key) {
        StringBuilder code = new StringBuilder();
        int len = key.length();
        for (int i = 0; i < base.length(); i++) {
            int k = i % len;
            char baseChar = base.charAt(i);
            char keyChar = key.charAt(k);
            code.append((char) (baseChar ^ keyChar));
        }
        return code.toString();
    }
}
